﻿/*!
 * 定义模块 Profile (用户资料) 中所有功能的服务 API。
 * 
 * Copyright (c), 上海沃恩信息科技有限公司.
 * All rights reserved.
 * Licensed under BSD (https://www.pittypat.work/bsd.html).
 */

/*
 * @param {Object} $    jQuery 命名空间。
 * @param {Object} $$   pittypat 命名空间。
 * @param {Object} _mod 模块 Profile (用户资料) 的命名空间。
 * 
 * 更多说明请参见：
 * https://www.pittypat.work/com/waln/pittypat/coding/help/_api.js.html。
 */
(function ($, $$, _mod) {
    'use strict';

    // 模块的 API 和 UI 命名空间
    var _api = _mod.api = _mod.api || {};

	/*
	 * 功能 Set (设置资料) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 登录名称
	 *     // 用户的登录名称。
	 *     loginName: {string(50)?},
	 * 
	 *     // 用户名称
	 *     // 用户的友好显示名称。
	 *     name: {string(50)?},
	 * 
	 *     // 手机号码
	 *     // 用户的手机号码，如果提供了手机号码，必须是唯一的。
	 *     mobile: {string(20)?},
	 * 
	 *     // 电子邮件地址
	 *     // 用户的电子邮件地址。如果提供了电子邮件地址，则必须是唯一的。
	 *     email: {string(50)?},
	 * 
	 *     // 登录后首页
	 *     // 用户在登录后进入的页面，由用户自己配置。支持 '~' 作为前缀的路径格式。
	 *     loginHomeUrl: {string(200)?},
	 * 
	 *     // 登录后首页说明
	 *     // 对用户登录后首先进入的页面的说明信息。
	 *     loginHomeDescription: {string(100)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.set = $$.api({
        // 请求路径
        url: '~/waln/authority/profile/set',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            if (!e.args.loginName) {
                e.message = '没有提供登录名称。';
                return;
            }

            if (!e.args.name) {
                e.args.name = e.args.loginName;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = e.args;
        }
    });

	/*
	 * 功能 SetPassword (设置密码) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 原始密码
	 *     // 用户原来的登录密码。
	 *     oldPassword: {string(30)?},
	 * 
	 *     // 新登录密码
	 *     // 用户新的登录密码。
	 *     newPassword: {string(30)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * null
	 */
    _api.setPassword = $$.api({
        // 请求路径
        url: '~/waln/authority/profile/setpassword',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'POST',

        // 对 args 进行验证
        validate: function (e) {
            // 验证 oldPassword (原密码)
            if (!$$.util.is.password(e.args.oldPassword)) {
                e.message = '没有提供有效的原密码。';
                return;
            }

            // 验证 newPassword (新密码)
            if (!$$.util.is.password(e.args.newPassword)) {
                e.message = '没有提供有效的新密码。';
                return;
            }

            if (e.args.newPassword !== e.args.confirmPassword) {
                e.message = '确认密码与新密码不一致。';
                return;
            }

            // 空字符串表示通过验证
            e.message = '';
        },

        // 发送给服务器的数据
        data: function (e) {
            e.data = {
                oldPassword: e.args.oldPassword,
                newPassword: e.args.newPassword
            };
        }
    });

	/*
	 * 功能 SetFace (设置头像) 的服务 API。
	 * 
	 * 输入(args):
	 * {
	 *     // 头像路径
	 *     // 用户头像文件的虚拟路径。
	 *     faceUrl: {string(200)?} 
	 * }
	 * 
	 * 输出(success.result):
	 * // 原头像路径
	 * // 用户头像文件的原始虚拟路径，用于删除原头像文件。
	 * oldFaceUrl: {string(200)?}
	 */
    _api.setFace = $$.api({
        // 请求路径
        url: '~/waln/authority/profile/setface',

        // 请求方法：WS|WEBSOCKET、UPLOAD、UPOST|UPLOAD-POST、UWS|UPLOAD-WS、POST 之一
        method: 'UPOST'
    });
})(jQuery, pittypat, pittypat.namespace('waln.authority.profile'));
